[XEND] Keep track of attached vbds and vifs for XenAPI
authorAlastair Tse <atse@xensource.com>
Fri, 6 Oct 2006 11:30:46 +0000 (12:30 +0100)
committerAlastair Tse <atse@xensource.com>
Fri, 6 Oct 2006 11:30:46 +0000 (12:30 +0100)
Signed-off-by: Alastair Tse <atse@xensource.com>
tools/python/xen/xend/XendAPI.py
tools/python/xen/xend/XendConfig.py

index 042fd5b359f917093b1b4ed5f4452af0ee98f514..402e0bcbceb776fe71ed6a73b4b397c8228b9434 100644 (file)
@@ -833,7 +833,9 @@ class XendAPI:
     def vm_get_by_label(self, session, label):
         xendom = XendDomain.instance()
         dom = xendom.domain_lookup_nr(label)
-        return xen_api_success(dom.get_uuid())
+        if dom:
+            return xen_api_success(dom.get_uuid())
+        return xen_api_error(XEND_ERROR_VM_INVALID)
     def vm_create(self, session, vm_struct):
         xendom = XendDomain.instance()
         domuuid = xendom.create_domain(vm_struct)
index 1dab6886d8368f7ff119824149f291e48ca384e7..ba6337b0c5c9527dea804199c0f852111e4e6efc 100644 (file)
@@ -726,7 +726,10 @@ class XendConfig(dict):
             raise XendConfigError("XendConfig: device_add requires some "
                                   "config.")
 
-        log.debug("XendConfig.device_add: %s" % str(cfg_sxp))
+        if cfg_sxp:
+            log.debug("XendConfig.device_add: %s" % str(cfg_sxp))
+        if cfg_xenapi:
+            log.debug("XendConfig.device_add: %s" % str(cfg_xenapi))
 
         if cfg_sxp:
             config = sxp.child0(cfg_sxp)
@@ -743,6 +746,8 @@ class XendConfig(dict):
             dev_uuid = dev_info.get('uuid', uuid.createString())
             dev_info['uuid'] = dev_uuid
             self['device'][dev_uuid] = (dev_type, dev_info)
+            if dev_type in ('vif', 'vbd'):
+                self['%s_refs' % dev_type].append(dev_uuid)
             return dev_uuid
 
         if cfg_xenapi:
@@ -761,6 +766,7 @@ class XendConfig(dict):
                 dev_uuid = cfg_xenapi.get('uuid', uuid.createString())
                 dev_info['uuid'] = dev_uuid
                 self['device'][dev_uuid] = (dev_type, dev_info)
+                self['vif_refs'].append(dev_uuid)
                 return dev_uuid
             
             elif dev_type == 'vbd':
@@ -774,6 +780,7 @@ class XendConfig(dict):
                 dev_uuid = cfg_xenapi.get('uuid', uuid.createString())
                 dev_info['uuid'] = dev_uuid
                 self['device'][dev_uuid] = (dev_type, dev_info)
+                self['vbd_refs'].append(dev_uuid)                
                 return dev_uuid